作业一：看下面一段程序，回答问题
s1 := make([]int, 3, 4)
s2 := append(s1, 1)

请问s1、s2内各有什么元素？
  s1是一个切片，使用make函数创建，长度为3，容量为4，元素都初始化为0
  s2则是通过将s1的内容追加到一个新的切片中而创建的，append函数会将s1的元素复制到一个新的底层数组，并返回一个新的切片。因此s2与s1是不同的底层数组
  s1元素为[0 0 0]
  s2元素为[0 0 0 1]
s1修改一个元素会影响s2吗？
  不会影响，首先s1的容量可以满足s2的append函数插入的新元素，append函数插入之后会返回一个新切片不是原s1切片，所以他们是不同的底层数组。
s2修改一个元素会影响s1吗？
  会影响，s2是由s1中创建的新切片，实际上是共享相同的底层数组，当修改s2元素时s1也会改变。
s2再增加一个元素会怎么样？
  会扩容，s2的长度与容量是根据s1创建出来的切片，所以长度为3,4,继续增加一个元素导致容量空间不足，会新创建一个底层数组并把原s1切片中的元素复制过来其中包含新元素。
作业二：有一个数组 [1,4,9,16,2,5,10,15]，生成一个新切片，要求新切片元素是数组相邻2项的和
func main() {
	// 有一个数组 [1,4,9,16,2,5,10,15]，生成一个新切片，要求新切片元素是数组相邻2项的和
	// 1.定义数组
	arr := [8]int{1, 4, 9, 16, 2, 5, 10, 15}
	// 2.定义切片稍后会把数组值追加当中
	var slice1 []int
	// 3.len(arr)-1 代表限制i索引范围等于6方位arr[i+1]索引越界
	for i := 0; i < len(arr)-1; i++ {
	// 4.arr[i]代表索引元素，arr[i+1]代表索引+1
		sum := arr[i] + arr[i+1]
	// 5.把sum值追加到切片当中
		slice1 = append(slice1, sum)
	}
	fmt.Println(slice1)
}
作业三：随机产生100个整数，数字的范围[-100, 100]，降序输出这些生成的数字并打印其重复的次数
func main() {
	//1.定义随机数
	r := rand.New(rand.NewSource(time.Now().UnixNano()))
	//2.定义切片
	var randNum []int
	//3.产生100个整数
	for i := 0; i <= 100; i++ {
        //这里要生成200个随机数-100从而达到有负数的范围，201这个1是为了不包含索引0
		num := r.Intn(201) - 100
		randNum = append(randNum, num)
		fmt.Println(num)
	}
	//4.降序排序
	sort.Sort(sort.Reverse(sort.IntSlice(randNum)))
	//5.使用map进行排序
	countMap := make(map[int]int)
	for _, num := range randNum {
		countMap[num]++
        //这里是遍历出来的value进行+1，能更好的确认出那些是重复的
	}
	fmt.Println()
	//6.打印每个数字的重复次数
	for num, count := range countMap {
		fmt.Printf("数字 %d 重复 %d 次 \n", num, count)
	}
}
作业四：简述线性数据结构和哈希表优劣
线性数据结构是一种元素之间存在一对一的顺序关系的数据结构，而哈希表是一种通过哈希函数将关键字映射到表中一个位置来实现快速查找的数据结构。
线性数据结构优点：
1.简单直观：易于理解和实现
2.随机访问：数组作为一种线性数据结构可以实现常数时间复杂度的随机访问。
3.顺序存储：适合需要按照顺序访问元素的场景。
线性数据结构缺点：
1.插入和删除效率低：在中间插入或删除元素时需要移动其它元素。
2.不适用于大规模数据：随着数据规模增大，性能可能下降。
哈希表优点：
1.快速查找：通过哈希函数计算位置，实现常数时间复杂度的查找。
2.高效的插入和删除：插入和删除元素的平均时间复杂度接近常数级别。
3.适用于大规模数据：适合处理大量数据的存储和查找需求。
哈希表缺点：
1.冲突处理：可能出现哈希冲突，需要解决冲突问题。
2.空间复杂度高：可能需要分配较大的存储空间来避免冲突。
3.不支持顺序访问：不适合需要按照顺序访问元素的场景。
总结：线性数据结构适用于简单场景，而哈希表适用于需要高效查找、插入或删除操作的场景。